package com.sl.plugin.step.json;

import com.sl.core.engine.step.ProcessCompService;
import com.sl.core.engine.step.impl.AbstractProcessComp;

import java.util.List;
import java.util.Map;

/**
 */
public class JsonInputComp extends AbstractProcessComp<List<Map<String, Object>>, List<Map<String, Object>>> implements ProcessCompService {


    public JsonInputComp(JsonInputCompDescriptor abstractProcessCompDescriptor) {
        super(abstractProcessCompDescriptor);
    }

    @Override
    public List<Map<String, Object>> input(List<Map<String, Object>> param) {
        return param;
    }


//    @SneakyThrows
//    public boolean row(JsonInputCompCompDescriptor smi, JsonInputCompContext sdi) {
//
//        JsonInputCompCompDescriptor meta = (JsonInputCompCompDescriptor) smi;
//        String[] arguments = getTrans().getArguments();
//        String json = arguments[0];
//        RowMetaInterface rowMeta = meta.getRowMeta();
//
//        //false是不继续了
//        if (StrUtil.isBlank(json)) {
//            setOutputDone();
//            return false;
//        }
//
//        //如果顶层是对象 这里是不是不需要做映射
//        Object object = null;
//        if (json.startsWith("{")) {
//            object = JsonUtil.toBean(json, Map.class);
//
//        } else if (json.startsWith("[")) {
//            object = JsonUtil.toList(json, Map.class);
//        }
//
//        //如果是动态参数标记 则开始解析rowMeta
//        if (BooleanUtil.isTrue(meta.getBoolAttr("dynamicInputFlag"))) {
////            dynamicProcessRow(object);
//            setOutputDone();
//            return false;
//        }
//
//        //如果顶层是对象 这里是不是不需要做映射
//        if (object instanceof Map<?, ?>) {
//            Object[] jsonData = jsonObjectTransferByRowDefine(object, rowMeta);
//            if (ArrayUtil.isNotEmpty(jsonData)) {
//                putRow(rowMeta, jsonData);
//            }
//        } else if (object instanceof Collections) {
//            List<Object[]> list = jsonArrayTransferByRowDefine(object, rowMeta);
//            for (Object[] obj : list) {
//                if (ArrayUtil.isNotEmpty(obj)) {
//                    putRow(rowMeta, obj);
//                }
//            }
//        }
//        setOutputDone();
//        return false;
//    }


}
